class: center, middle, inverse, title-slide # Manipular gràfics ## Tècniques de Recerca ### 2021-2022 --- ### Recapitulant ggplot2 <br> ```r ggplot(data = marc_de_dades, aes(estetic = variable ...), estetic = fixat) + geom_xxx(aes(estetic = variable ...), estetic = fixat)) + facet_xxx() + altres_opcions ``` --- ### Alguns principis - Mostrar les dades - Minimitzar elements innecessaris (els que no són dades o no serveixen per interpretar-les) - Facilitar les comparacions - Usar el color i altres elements per centrar l'atenció en el missatge - Usar posició i longitud en lloc d'àrea o angle per comparar quantitats - Centrar-se en el missatge --- ### Tipus de representacions Alguns tipus són més fàcils d'avaluar/interpretar que altres: <br> .center[_De més a menys fàcil_]  --- background-image: url(data:image/png;base64,#img/channels-vertical.png) background-size: contain .left-column[De més a menys fàcil] --- ### Evitar els gràfics circulars <br> .pull-left[  ] .pull-right[  ] --- ### Ènfasi  --- ### Missatge <br>  --- ### Facilitar les comparacions <img src="data:image/png;base64,#img/seg-three-ways.png" width="80%" style="display: block; margin: auto;" /> --- ### Personalitzant l'aparença dels gràfics Avui veurem algunes funcions noves: - `labs()` - `scale_xxx()` - `guides()` - `theme()` --- ### Etiquetes amb `labs()` ```r ggplot(...) + labs(title = "Títol", subtitle = "Subtítol", caption = "Nota al peu") ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-4-1.png" width="80%" style="display: block; margin: auto;" /> --- ### Etiquetes amb `labs()` Controla els títols de totes les variables incloses als estètics `aes()`: ```r gapminder %>% ggplot(aes(gdpPercap, lifeExp, color = continent, size = pop)) + geom_point() + labs(title = "Relació entre renda i esperança de vida", subtitle = "La gent viu més temps als països més rics", caption = "Font: gaminder", * x = "Renda per càpita", * y = "Esperança de vida", * color = "Continent", * size = "Població") ``` --- ### Etiquetes amb `labs()` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-5-1.png" width="100%" style="display: block; margin: auto;" /> --- ### Eliminar etiquetes ```r gapminder %>% ggplot(aes(x = factor(year), y = lifeExp)) + geom_boxplot() + labs(title = "Evolució de l'esperança de vida", * x = NULL, * y = NULL) ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-6-1.png" width="70%" style="display: block; margin: auto;" /> --- ### Exercici Reproduïu aquest gràfic: <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-7-1.png" width="90%" style="display: block; margin: auto;" /> --- ### Escales amb `scale_xxx()` Aquestes funcions permeten controlar la presentació i el format de les escales dels estètics assignats a les variables. El nom de les diferents funcions segueix l'esquema següent: .center[`scale_estètic_escala`] On: - **estètic:** nom de l'estètic assignat, per ex. `x`, `y`, `color`, `fill`, `shape`, `size`, `alpha`, etc. - **escala:** nom de l'escala o tipus de variable, per ex. `continuous`, `discrete`, `log10`, etc. --- ### Escales amb `scale_xxx()` **ggplot** afegeix automàticament unes escales per defecte. Quan introduïm: ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() ``` Automàticament inclou les escales següents: ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + * scale_x_continuous() + * scale_y_continuous() + * scale_color_discrete() ``` Però podem modificar els valors per defecte especificant els arguments o canviant la funció. --- ### Eixos L'argument `breaks` permet canviar les marques dels eixos. ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + * scale_x_continuous(breaks = c(25000, 50000, 75000, 100000)) + * scale_y_continuous(breaks = seq(30, 80, 10)) ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-10-1.png" width="70%" style="display: block; margin: auto;" /> --- ### Eixos Amb l'argument `labels` també podem modificar les etiquetes de les marques: ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + scale_x_continuous(breaks = c(50000, 100000), * labels = c("50mil", "100mil")) ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-11-1.png" width="70%" style="display: block; margin: auto;" /> --- ### Eixos I podem substituir les escales, habitualment les dels eixos i les dels colors. ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = year)) + geom_point() + * scale_x_log10() ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-12-1.png" width="70%" style="display: block; margin: auto;" /> --- ### Exercici Refeu el gràfic anterior modificant l'eix `y` de manera que hi hagi marques de 30 a 80 anys en intervals de 10 anys. -- <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-13-1.png" width="90%" style="display: block; margin: auto;" /> --- ### Exercici Què hem d'afegir a aquest codi per fer que els punts siguin tots .bg-red[vermells]? ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp)) + geom_point() + scale_x_log10() ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-14-1.png" width="70%" style="display: block; margin: auto;" /> --- ### Colors - Per als estètics `color` i `fill`, **ggplot** fa servir una sèrie de _paletes_ per defecte en funció del tipus de variable (contínua o discreta) - Quan es tracta de valors **discrets**, podem fixar els colors de forma manual amb l'argument `values` de les funcions `scale_color_manual` i `scale_fill_manual` - Identifiquem els colors amb la funció `c()`, pel seu nom i entre cometes - Noms dels colors: http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf --- ### Colors manualment Argument `values`: cal indicar un color per a cada categoria de la variable que hem assignat a l'estètic, en el mateix ordre de les categories. ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + * scale_color_manual(values = c("gold", "red", "green", "purple", "blue")) ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-15-1.png" width="65%" style="display: block; margin: auto;" /> --- ### Colors manualment Argument `labels`: si volem canviar els noms assignats a les categories. ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + scale_color_manual(values = c("gold", "red", "green", "purple", "blue"), * labels = c("Àfrica", "Amèrica", "Àsia", "Europa", "Oceania")) ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-16-1.png" width="65%" style="display: block; margin: auto;" /> --- ### Altres paletes També podem usar les paletes de [ColorBrewer](https://colorbrewer2.org/), de tipus divergent, seqüencial, qualitatiu: <img src="data:image/png;base64,#img/colorbrewer.jpg" width="80%" style="display: block; margin: auto;" /> --- ### Paletes per a variables categòriques (o discretes) Amb les funcions `scale_color_brewer()` i `scale_fill_brewer()` ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + * scale_color_brewer(palette = "Set1") ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-18-1.png" width="65%" style="display: block; margin: auto;" /> --- ### Paletes per a variables contínues (o ordinals) Amb les funcions `scale_color_distiller()` i `scale_fill_distiller()` ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = year)) + geom_point() + scale_x_log10() + * scale_color_distiller(palette = "YlOrRd", direction = 1) ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-19-1.png" width="65%" style="display: block; margin: auto;" /> --- ### Exercici Canvieu els colors d'aquest gràfic, manualment o amb una paleta. ```r library(titanic, package = "radiant.data") titanic %>% ggplot(aes(x = embarked, fill = survived)) + geom_bar(position = "fill") ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-20-1.png" width="70%" style="display: block; margin: auto;" /> --- ### Eliminar escales redundants ```r gapminder %>% ggplot(aes(x = lifeExp, fill = continent)) + geom_histogram() + facet_wrap(~ continent) ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-21-1.png" width="80%" style="display: block; margin: auto;" /> --- ### Eliminar escales redundants ```r gapminder %>% ggplot(aes(x = lifeExp, fill = continent)) + geom_histogram() + facet_wrap(~ continent) + * guides(fill = "none") ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-22-1.png" width="80%" style="display: block; margin: auto;" /> --- ### Temes - Conjunt de funcions que permeten manipular els aspectes del gràfic no directament relacionats amb les dades: llegenda, fons, línies de divisió, etc. - A més del tema per defecte, hi ha una sèrie de temes predeterminats: <img src="data:image/png;base64,#img/themes.png" width="50%" style="display: block; margin: auto;" /> --- ### Temes predeterminats Només cal afegir la funció `theme_xxx()` amb el tema escollit: ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + * theme_light() ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-24-1.png" width="70%" style="display: block; margin: auto;" /> --- ### Canviar la llegenda de posició - S'ha de fer dins de la funció `theme_xxx()` escollida, o de la funció `theme()` si fem servir el tema predeterminat - Amb l'argument `legend.position` que pot ser `"left"`, `"right"`, `"top"` o `"bottom"` ```r gapminder %>% ggplot(aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + theme(legend.position = "bottom") ``` <img src="data:image/png;base64,#viz-manip_files/figure-html/unnamed-chunk-25-1.png" width="55%" style="display: block; margin: auto;" /> --- ### Exercici - Instal·leu i carregueu el paquet **palmerpenguins** - Inspeccioneu el marc de dades `penguins` .pull-left[  ] .pull-right[  ] - Feu un gràfic amb aquestes dades que inclogui dos o tres variables - Personalitzeu els títols, etiquetes, tema, etc.